package com.wgzx.modbus.entity.response;

import com.wgzx.modbus.constant.FunctionCode;
import com.wgzx.modbus.entity.ModbusRsp;
import io.netty.buffer.ByteBuf;
import lombok.Getter;

/**
 * 请求报文：<br/>
 * 功能码：0x06写单个寄存器 <br/>
 * 寄存器地址：2个字节0x0000至0xFFFF <br/>
 * 寄存器值：2个字节0x0000至0xFFFF <br/>
 *
 * 响应报文：<br/>
 * 功能码：0x06写单个寄存器 <br/>
 * 寄存器地址：2个字节0x0000至0xFFFF <br/>
 * 寄存器值：2个字节0x0000至0xFFFF <br/>
 *
 * 示例报文：<br/>
 * Rx:00 01(事务ID) 00 00(协议码) 00 06(报文长度) FF(单元标识符) 06(功能码) 00 01(偏移量) 00 FF(写入一个寄存器(2字节)，测试写入255) <br/>
 * Tx:00 01(事务ID) 00 00(协议码) 00 06(报文长度) FF(单元标识符) 06(功能码) 00 01(偏移量) 00 FF(返回一个寄存器(2字节)，返回数据255) <br/>
 *
 * @author gexin
 */
@Getter
public class WriteSingleRegisterResponse extends ModbusRsp {

    private int address;
    private int value;

    public WriteSingleRegisterResponse(FunctionCode functionCode) {
        super(functionCode);
    }

    @Override
    public String toString() {
        return "WriteSingleInputRegister{" + "registerAddress=" + address + ", registerValue=" + value + '}';
    }

    @Override
    public void decode(ByteBuf buffer) {
        address = buffer.readUnsignedShort();
        value = buffer.readUnsignedShort();
    }
}
